package com.katze.boot.file.servlet;

import com.katze.boot.file.entity.FileTransfer;

import java.io.IOException;

/**
 * 文件上传服务接口
 */
public interface IFileUploadService {

    /**
     * 文件上传前断点校验
     * @param transfer 文件传输对象
     * @return 返回所有已存在的文件块序号
     */
    String[] beforeUpload(FileTransfer transfer);

    /**
     * 文件块上传
     * @param transfer 文件传输对象
     */
    void upload(FileTransfer transfer) throws IOException;

    /**
     * 文件上传完成后合并文件块
     * 读取临时目录（目录名称格式：用户ID_文件MD5值）下所有文件块进行排序，在临时目录下创建一个原文件，将所有文件逐一读取并写入该文件，每个文件块操作成功后一同删除,合并完成后文件需要被移走，
     * 原先目录要删除
     * @param transfer 文件传输对象
     */
    void afterUpload(FileTransfer transfer);
}
